1743 lines (1743 with data), 127.9 kB
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"machine_shape": "hm"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "8XnVMPBXmtRa"
},
"source": [
"# TensorNetworks in Neural Networks.\n",
"\n",
"Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
"\n",
"First off, let's install tensornetwork"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7HGRsYNAFxME"
},
"source": [
"# !pip install tensornetwork\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import tensorflow as tf\n",
"# Import tensornetwork\n",
"import tensornetwork as tn\n",
"from keras.optimizers import Adam\n",
"import random\n",
"import time\n",
"# Set the backend to tesorflow\n",
"# (default is numpy)\n",
"tn.set_default_backend(\"tensorflow\")\n",
"np.random.seed(42)\n",
"random.seed(42)\n",
"tf.random.set_seed(42)"
],
"execution_count": 63,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "g1OMCo5XmrYu"
},
"source": [
"# TensorNetwork layer definition\n",
"\n",
"Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
"\n",
"We TensorNetwork's NCon API to keep the code short."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wvSMKtPufnLp"
},
"source": [
"class TNLayer(tf.keras.layers.Layer):\n",
"\n",
" def __init__(self):\n",
" super(TNLayer, self).__init__()\n",
" # Create the variables for the layer.\n",
" self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
" stddev=1.0/32.0),\n",
" name=\"a\", trainable=True)\n",
" self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
" stddev=1.0/32.0),\n",
" name=\"b\", trainable=True)\n",
" self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
" name=\"bias\", trainable=True)\n",
"\n",
" def call(self, inputs):\n",
" # Define the contraction.\n",
" # We break it out so we can parallelize a batch using\n",
" # tf.vectorized_map (see below).\n",
" def f(input_vec, a_var, b_var, bias_var):\n",
" # Reshape to a matrix instead of a vector.\n",
" input_vec = tf.reshape(input_vec, (32, 32))\n",
"\n",
" # Now we create the network.\n",
" a = tn.Node(a_var)\n",
" b = tn.Node(b_var)\n",
" x_node = tn.Node(input_vec)\n",
" a[1] ^ x_node[0]\n",
" b[1] ^ x_node[1]\n",
" a[2] ^ b[2]\n",
"\n",
" # The TN should now look like this\n",
" # | |\n",
" # a --- b\n",
" # \\ /\n",
" # x\n",
"\n",
" # Now we begin the contraction.\n",
" c = a @ x_node\n",
" result = (c @ b).tensor\n",
"\n",
" # To make the code shorter, we also could've used Ncon.\n",
" # The above few lines of code is the same as this:\n",
" # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
"\n",
" # Finally, add bias.\n",
" return result + bias_var\n",
"\n",
" # To deal with a batch of items, we can use the tf.vectorized_map\n",
" # function.\n",
" # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
" result = tf.vectorized_map(\n",
" lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
" return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
],
"execution_count": 64,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "V-CVqIhPnhY_"
},
"source": [
"# Smaller model\n",
"These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
]
},
{
"cell_type": "code",
"metadata": {
"id": "XPBvnB95jg4b",
"outputId": "200dee52-0048-4122-8214-b58c75835b05",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"Dense = tf.keras.layers.Dense\n",
"fc_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.Input(shape=(2,)),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" Dense(1, activation=None)])\n",
"fc_model.summary()"
],
"execution_count": 65,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_10\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_25 (Dense) (None, 1024) 3072 \n",
" \n",
" dense_26 (Dense) (None, 1024) 1049600 \n",
" \n",
" dense_27 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 1053697 (4.02 MB)\n",
"Trainable params: 1053697 (4.02 MB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bbKsmK8wIFTp",
"outputId": "7a336f73-c20a-4241-97ca-a970dfc53774",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"tn_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.Input(shape=(2,)),\n",
" Dense(1024, activation=tf.nn.relu),\n",
" # Here, we replace the dense layer with our MPS.\n",
" TNLayer(),\n",
" TNLayer(),\n",
" TNLayer(),\n",
" Dense(1, activation=None)])\n",
"tn_model.summary()"
],
"execution_count": 66,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential_11\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" dense_28 (Dense) (None, 1024) 3072 \n",
" \n",
" tn_layer_15 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_16 (TNLayer) (None, 1024) 5120 \n",
" \n",
" tn_layer_17 (TNLayer) (None, 1024) 5120 \n",
" \n",
" dense_29 (Dense) (None, 1) 1025 \n",
" \n",
"=================================================================\n",
"Total params: 19457 (76.00 KB)\n",
"Trainable params: 19457 (76.00 KB)\n",
"Non-trainable params: 0 (0.00 Byte)\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GWwoYp0WnsLA"
},
"source": [
"# Training a model\n",
"\n",
"You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
]
},
{
"cell_type": "code",
"metadata": {
"id": "qDFzOC7sDBJ-"
},
"source": [
"X = np.concatenate([np.random.randn(20, 2) + np.array([3, 3]),\n",
" np.random.randn(20, 2) + np.array([-3, -3]),\n",
" np.random.randn(20, 2) + np.array([-3, 3]),\n",
" np.random.randn(20, 2) + np.array([3, -3])])\n",
"\n",
"Y = np.concatenate([np.ones((40)), -np.ones((40))])"
],
"execution_count": 67,
"outputs": []
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "19TWP-1eKURB",
"outputId": "034ebb7d-e2e4-49d5-844f-43f3bb0f939f"
},
"execution_count": 68,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710115989.5557942\n",
"Mon Mar 11 00:13:09 2024\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "crc0q1vbIyTj",
"outputId": "a7059ab6-9426-4a73-8736-769eef3078f4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
}
},
"source": [
"optimizer = Adam(learning_rate=0.1)\n",
"tn_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"tn_model.fit(X, Y, epochs=300, verbose=2)"
],
"execution_count": 69,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 2s - loss: 325.4962 - 2s/epoch - 671ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 865.2145 - 18ms/epoch - 6ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 532.4218 - 16ms/epoch - 5ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 1267.5981 - 20ms/epoch - 7ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 90239.7188 - 20ms/epoch - 7ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 1078.9542 - 17ms/epoch - 6ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 434.8685 - 21ms/epoch - 7ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 3627513.2500 - 18ms/epoch - 6ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 3012.8237 - 18ms/epoch - 6ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 18024.8477 - 18ms/epoch - 6ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 960307.0000 - 17ms/epoch - 6ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 20715.6016 - 19ms/epoch - 6ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 1965.8219 - 18ms/epoch - 6ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 72.8251 - 18ms/epoch - 6ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 9469.8662 - 17ms/epoch - 6ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 218.8144 - 18ms/epoch - 6ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 46.9051 - 19ms/epoch - 6ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 293.2842 - 17ms/epoch - 6ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 8.0946 - 18ms/epoch - 6ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 2.0901 - 18ms/epoch - 6ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 8.8524 - 19ms/epoch - 6ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 9.6945 - 18ms/epoch - 6ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 3.7562 - 18ms/epoch - 6ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 1.4423 - 20ms/epoch - 7ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 3.2687 - 20ms/epoch - 7ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 3.4746 - 18ms/epoch - 6ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 1.6351 - 21ms/epoch - 7ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 1.0742 - 18ms/epoch - 6ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 1.8142 - 20ms/epoch - 7ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 1.6728 - 20ms/epoch - 7ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 1.0942 - 21ms/epoch - 7ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 1.1070 - 19ms/epoch - 6ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 1.2734 - 19ms/epoch - 6ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 1.1241 - 20ms/epoch - 7ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 1.0355 - 19ms/epoch - 6ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 1.0863 - 19ms/epoch - 6ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 1.0647 - 19ms/epoch - 6ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 1.0187 - 17ms/epoch - 6ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 1.0246 - 18ms/epoch - 6ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 1.0345 - 18ms/epoch - 6ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 1.0031 - 19ms/epoch - 6ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 1.0322 - 18ms/epoch - 6ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 1.0236 - 18ms/epoch - 6ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 1.0035 - 19ms/epoch - 6ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 1.0020 - 19ms/epoch - 6ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 1.0104 - 19ms/epoch - 6ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 1.0094 - 18ms/epoch - 6ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 1.0253 - 17ms/epoch - 6ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 1.0101 - 21ms/epoch - 7ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 1.0069 - 19ms/epoch - 6ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 1.0029 - 18ms/epoch - 6ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 1.0012 - 18ms/epoch - 6ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 1.0007 - 18ms/epoch - 6ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 1.0011 - 19ms/epoch - 6ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 1.0041 - 18ms/epoch - 6ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 1.0041 - 19ms/epoch - 6ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.9976 - 18ms/epoch - 6ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 1.0181 - 18ms/epoch - 6ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 1.0168 - 19ms/epoch - 6ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 1.0157 - 18ms/epoch - 6ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 1.0082 - 17ms/epoch - 6ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 1.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.9956 - 18ms/epoch - 6ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 1.0219 - 19ms/epoch - 6ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 1.0157 - 19ms/epoch - 6ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.9973 - 19ms/epoch - 6ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 1.0031 - 19ms/epoch - 6ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 1.0246 - 18ms/epoch - 6ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 1.0145 - 21ms/epoch - 7ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 1.0050 - 19ms/epoch - 6ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 1.0061 - 17ms/epoch - 6ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.9998 - 19ms/epoch - 6ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 1.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 1.0066 - 21ms/epoch - 7ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 1.0082 - 19ms/epoch - 6ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.9996 - 18ms/epoch - 6ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 1.0033 - 18ms/epoch - 6ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 1.0059 - 17ms/epoch - 6ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.9997 - 19ms/epoch - 6ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 1.0377 - 18ms/epoch - 6ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 1.0032 - 18ms/epoch - 6ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 1.0386 - 18ms/epoch - 6ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 1.0063 - 17ms/epoch - 6ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 1.0127 - 17ms/epoch - 6ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 1.0437 - 16ms/epoch - 5ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 1.0192 - 17ms/epoch - 6ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 1.0290 - 18ms/epoch - 6ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 1.0203 - 16ms/epoch - 5ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 1.0038 - 17ms/epoch - 6ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 1.0151 - 18ms/epoch - 6ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 1.0332 - 17ms/epoch - 6ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 1.0073 - 17ms/epoch - 6ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 1.0085 - 17ms/epoch - 6ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 1.0080 - 18ms/epoch - 6ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 1.0053 - 19ms/epoch - 6ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 1.0180 - 18ms/epoch - 6ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 1.0027 - 17ms/epoch - 6ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 1.0045 - 18ms/epoch - 6ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 1.0171 - 20ms/epoch - 7ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 1.0076 - 17ms/epoch - 6ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 1.0104 - 17ms/epoch - 6ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 1.0037 - 18ms/epoch - 6ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 1.0046 - 18ms/epoch - 6ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 1.0073 - 17ms/epoch - 6ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 1.0057 - 18ms/epoch - 6ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 1.0086 - 17ms/epoch - 6ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 1.0013 - 19ms/epoch - 6ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 1.0013 - 17ms/epoch - 6ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 1.0028 - 18ms/epoch - 6ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.9982 - 16ms/epoch - 5ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 1.0328 - 17ms/epoch - 6ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 0.9903 - 16ms/epoch - 5ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 1.0347 - 18ms/epoch - 6ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 1.0639 - 17ms/epoch - 6ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 1.0098 - 18ms/epoch - 6ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 1.0871 - 18ms/epoch - 6ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 1.0329 - 17ms/epoch - 6ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 1.0014 - 17ms/epoch - 6ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 1.0446 - 16ms/epoch - 5ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 1.0176 - 17ms/epoch - 6ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 1.0351 - 17ms/epoch - 6ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 1.0396 - 16ms/epoch - 5ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 1.0066 - 17ms/epoch - 6ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 1.0125 - 17ms/epoch - 6ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 1.0036 - 18ms/epoch - 6ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 1.0161 - 18ms/epoch - 6ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 1.0155 - 19ms/epoch - 6ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 1.0281 - 20ms/epoch - 7ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 1.0035 - 17ms/epoch - 6ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 1.0037 - 16ms/epoch - 5ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 1.0034 - 17ms/epoch - 6ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 1.0005 - 18ms/epoch - 6ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 1.0094 - 19ms/epoch - 6ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 0.9992 - 17ms/epoch - 6ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 1.0209 - 16ms/epoch - 5ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 1.0078 - 16ms/epoch - 5ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 1.0208 - 15ms/epoch - 5ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 1.0143 - 16ms/epoch - 5ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 1.0012 - 17ms/epoch - 6ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 1.0151 - 19ms/epoch - 6ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 1.0003 - 18ms/epoch - 6ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 1.0014 - 17ms/epoch - 6ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 1.0244 - 18ms/epoch - 6ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 1.0125 - 18ms/epoch - 6ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 1.0223 - 17ms/epoch - 6ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 1.0116 - 18ms/epoch - 6ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 1.0049 - 19ms/epoch - 6ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 1.0019 - 18ms/epoch - 6ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 1.0032 - 18ms/epoch - 6ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 1.0058 - 18ms/epoch - 6ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 1.0061 - 17ms/epoch - 6ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 1.0152 - 18ms/epoch - 6ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 1.0040 - 18ms/epoch - 6ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 1.0002 - 18ms/epoch - 6ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 1.0011 - 15ms/epoch - 5ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 1.0001 - 16ms/epoch - 5ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 1.0014 - 17ms/epoch - 6ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 1.0001 - 18ms/epoch - 6ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 1.0048 - 18ms/epoch - 6ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 1.0051 - 17ms/epoch - 6ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 1.0003 - 17ms/epoch - 6ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 1.0092 - 18ms/epoch - 6ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 1.0264 - 17ms/epoch - 6ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 1.0036 - 19ms/epoch - 6ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 1.0040 - 19ms/epoch - 6ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 1.0272 - 19ms/epoch - 6ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 1.0030 - 18ms/epoch - 6ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 1.0098 - 18ms/epoch - 6ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 1.0092 - 17ms/epoch - 6ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 1.0134 - 18ms/epoch - 6ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 1.0086 - 16ms/epoch - 5ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 1.0116 - 18ms/epoch - 6ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 1.0074 - 18ms/epoch - 6ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 1.0037 - 20ms/epoch - 7ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 1.0047 - 21ms/epoch - 7ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 1.0047 - 16ms/epoch - 5ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 1.0029 - 17ms/epoch - 6ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 1.0075 - 19ms/epoch - 6ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 1.0058 - 18ms/epoch - 6ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 1.0061 - 17ms/epoch - 6ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 1.0003 - 17ms/epoch - 6ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 1.0234 - 19ms/epoch - 6ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 1.0116 - 19ms/epoch - 6ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 1.0083 - 17ms/epoch - 6ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 1.0196 - 18ms/epoch - 6ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 1.0098 - 16ms/epoch - 5ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.9964 - 16ms/epoch - 5ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 1.0163 - 17ms/epoch - 6ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 1.0021 - 17ms/epoch - 6ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 1.0072 - 18ms/epoch - 6ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 1.0108 - 17ms/epoch - 6ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 1.0005 - 18ms/epoch - 6ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 1.0259 - 16ms/epoch - 5ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 1.0038 - 17ms/epoch - 6ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 1.0445 - 16ms/epoch - 5ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 1.0317 - 18ms/epoch - 6ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 1.0086 - 16ms/epoch - 5ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 1.0112 - 16ms/epoch - 5ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 1.0341 - 17ms/epoch - 6ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 1.0519 - 16ms/epoch - 5ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 1.0663 - 19ms/epoch - 6ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 1.0218 - 19ms/epoch - 6ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 1.0193 - 17ms/epoch - 6ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 1.0054 - 17ms/epoch - 6ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 1.0019 - 16ms/epoch - 5ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 1.0028 - 20ms/epoch - 7ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 1.0098 - 19ms/epoch - 6ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 1.0081 - 17ms/epoch - 6ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 1.0232 - 20ms/epoch - 7ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 1.0033 - 19ms/epoch - 6ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 1.0221 - 20ms/epoch - 7ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 1.0183 - 20ms/epoch - 7ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 1.0234 - 19ms/epoch - 6ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 1.0246 - 22ms/epoch - 7ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 1.0040 - 19ms/epoch - 6ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 1.0083 - 18ms/epoch - 6ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 1.0511 - 18ms/epoch - 6ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 1.0146 - 19ms/epoch - 6ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 1.0325 - 18ms/epoch - 6ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 1.0077 - 19ms/epoch - 6ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 1.0417 - 19ms/epoch - 6ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 1.0082 - 19ms/epoch - 6ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 1.0124 - 17ms/epoch - 6ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 0.9993 - 21ms/epoch - 7ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 1.0312 - 21ms/epoch - 7ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 1.0044 - 17ms/epoch - 6ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 1.0196 - 18ms/epoch - 6ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 1.0002 - 19ms/epoch - 6ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 1.0178 - 18ms/epoch - 6ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 1.0061 - 18ms/epoch - 6ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 1.0174 - 18ms/epoch - 6ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.9962 - 18ms/epoch - 6ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 1.0226 - 19ms/epoch - 6ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 1.0055 - 18ms/epoch - 6ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 1.0110 - 19ms/epoch - 6ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 1.0407 - 20ms/epoch - 7ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 1.0357 - 17ms/epoch - 6ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 1.0024 - 20ms/epoch - 7ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 1.0522 - 22ms/epoch - 7ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 1.0076 - 18ms/epoch - 6ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 1.0149 - 18ms/epoch - 6ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.9994 - 20ms/epoch - 7ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 1.0116 - 19ms/epoch - 6ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 1.0243 - 17ms/epoch - 6ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 1.0015 - 20ms/epoch - 7ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 1.0176 - 19ms/epoch - 6ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 1.0316 - 18ms/epoch - 6ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 1.0114 - 18ms/epoch - 6ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 1.0220 - 21ms/epoch - 7ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 1.0071 - 21ms/epoch - 7ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 1.0095 - 18ms/epoch - 6ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 1.0112 - 20ms/epoch - 7ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 1.0077 - 19ms/epoch - 6ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 1.0281 - 18ms/epoch - 6ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 1.0458 - 19ms/epoch - 6ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 1.0094 - 21ms/epoch - 7ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 1.0306 - 18ms/epoch - 6ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 0.9964 - 18ms/epoch - 6ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 1.0369 - 20ms/epoch - 7ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 1.0244 - 19ms/epoch - 6ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 1.0322 - 20ms/epoch - 7ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 1.0222 - 20ms/epoch - 7ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 1.0225 - 20ms/epoch - 7ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 1.0173 - 18ms/epoch - 6ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 1.0377 - 19ms/epoch - 6ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 1.0061 - 17ms/epoch - 6ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 1.0226 - 19ms/epoch - 6ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.9937 - 19ms/epoch - 6ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 1.0685 - 18ms/epoch - 6ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 1.0306 - 20ms/epoch - 7ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 1.0638 - 25ms/epoch - 8ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 1.0083 - 24ms/epoch - 8ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 1.0836 - 18ms/epoch - 6ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 1.0138 - 20ms/epoch - 7ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 1.0119 - 19ms/epoch - 6ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 1.0009 - 21ms/epoch - 7ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 1.0039 - 20ms/epoch - 7ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 1.0103 - 18ms/epoch - 6ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 1.0076 - 17ms/epoch - 6ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 1.0561 - 17ms/epoch - 6ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 1.0161 - 17ms/epoch - 6ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 1.0200 - 18ms/epoch - 6ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 1.0140 - 18ms/epoch - 6ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 1.0232 - 17ms/epoch - 6ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 1.0347 - 17ms/epoch - 6ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 1.0348 - 17ms/epoch - 6ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 1.0186 - 16ms/epoch - 5ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 1.0578 - 16ms/epoch - 5ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 1.0308 - 17ms/epoch - 6ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 1.0444 - 18ms/epoch - 6ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 1.0575 - 16ms/epoch - 5ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 1.0398 - 17ms/epoch - 6ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 1.0131 - 18ms/epoch - 6ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 1.0074 - 17ms/epoch - 6ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 1.0179 - 17ms/epoch - 6ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 1.0111 - 19ms/epoch - 6ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 1.0135 - 19ms/epoch - 6ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 1.0104 - 18ms/epoch - 6ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 1.0024 - 18ms/epoch - 6ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 1.0225 - 18ms/epoch - 6ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.src.callbacks.History at 0x7bae979aa350>"
]
},
"metadata": {},
"execution_count": 69
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n-aNP4n3sqG_",
"outputId": "7e19e014-2aae-41b7-f169-33384195bfc3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443
}
},
"source": [
"# Plotting code, feel free to ignore.\n",
"h = 1.0\n",
"x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
"y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"\n",
"# here \"model\" is your model's prediction (classification) function\n",
"Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
],
"execution_count": 70,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7baee0173c70>"
]
},
"metadata": {},
"execution_count": 70
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "wfZCzuq9KY9b",
"outputId": "7011d171-bc97-4c31-d946-11c1022872b7"
},
"execution_count": 71,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710115998.543605\n",
"Mon Mar 11 00:13:18 2024\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "Ft6S13x6KuEQ",
"outputId": "1829d859-d0fc-4b2f-f50e-324bffc390a6"
},
"execution_count": 72,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1710115998.5546968\n",
"Mon Mar 11 00:13:18 2024\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BMxSJo5gtOmQ"
},
"source": [
"# VS Fully Connected"
]
},
{
"cell_type": "code",
"metadata": {
"id": "NKQx7stYswzU",
"outputId": "de93862a-b1cc-4a64-b47a-b5a331b99142",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 11458
}
},
"source": [
"optimizer = Adam(learning_rate=0.1)\n",
"fc_model.compile(optimizer=optimizer, loss=\"mean_squared_error\")\n",
"fc_model.fit(X, Y, epochs=300, verbose=2)\n",
"# Plotting code, feel free to ignore.\n",
"h = 1.0\n",
"x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
"y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"\n",
"# here \"model\" is your model's prediction (classification) function\n",
"Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.contourf(xx, yy, Z)\n",
"plt.axis('off')\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
],
"execution_count": 73,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/300\n",
"3/3 - 1s - loss: 226377.2969 - 641ms/epoch - 214ms/step\n",
"Epoch 2/300\n",
"3/3 - 0s - loss: 28788.3008 - 23ms/epoch - 8ms/step\n",
"Epoch 3/300\n",
"3/3 - 0s - loss: 9976.3398 - 27ms/epoch - 9ms/step\n",
"Epoch 4/300\n",
"3/3 - 0s - loss: 7708.5015 - 25ms/epoch - 8ms/step\n",
"Epoch 5/300\n",
"3/3 - 0s - loss: 6912.8789 - 28ms/epoch - 9ms/step\n",
"Epoch 6/300\n",
"3/3 - 0s - loss: 3210.1431 - 24ms/epoch - 8ms/step\n",
"Epoch 7/300\n",
"3/3 - 0s - loss: 853.1756 - 25ms/epoch - 8ms/step\n",
"Epoch 8/300\n",
"3/3 - 0s - loss: 1123.9066 - 27ms/epoch - 9ms/step\n",
"Epoch 9/300\n",
"3/3 - 0s - loss: 394.2951 - 24ms/epoch - 8ms/step\n",
"Epoch 10/300\n",
"3/3 - 0s - loss: 361.3062 - 24ms/epoch - 8ms/step\n",
"Epoch 11/300\n",
"3/3 - 0s - loss: 297.7097 - 25ms/epoch - 8ms/step\n",
"Epoch 12/300\n",
"3/3 - 0s - loss: 29.0179 - 27ms/epoch - 9ms/step\n",
"Epoch 13/300\n",
"3/3 - 0s - loss: 94.8553 - 25ms/epoch - 8ms/step\n",
"Epoch 14/300\n",
"3/3 - 0s - loss: 34.3859 - 25ms/epoch - 8ms/step\n",
"Epoch 15/300\n",
"3/3 - 0s - loss: 59.6451 - 25ms/epoch - 8ms/step\n",
"Epoch 16/300\n",
"3/3 - 0s - loss: 12.3757 - 25ms/epoch - 8ms/step\n",
"Epoch 17/300\n",
"3/3 - 0s - loss: 10.9196 - 24ms/epoch - 8ms/step\n",
"Epoch 18/300\n",
"3/3 - 0s - loss: 18.4373 - 26ms/epoch - 9ms/step\n",
"Epoch 19/300\n",
"3/3 - 0s - loss: 4.0567 - 24ms/epoch - 8ms/step\n",
"Epoch 20/300\n",
"3/3 - 0s - loss: 3.6337 - 25ms/epoch - 8ms/step\n",
"Epoch 21/300\n",
"3/3 - 0s - loss: 5.8722 - 28ms/epoch - 9ms/step\n",
"Epoch 22/300\n",
"3/3 - 0s - loss: 4.1355 - 26ms/epoch - 9ms/step\n",
"Epoch 23/300\n",
"3/3 - 0s - loss: 1.5936 - 28ms/epoch - 9ms/step\n",
"Epoch 24/300\n",
"3/3 - 0s - loss: 1.0015 - 24ms/epoch - 8ms/step\n",
"Epoch 25/300\n",
"3/3 - 0s - loss: 0.9815 - 23ms/epoch - 8ms/step\n",
"Epoch 26/300\n",
"3/3 - 0s - loss: 0.9457 - 26ms/epoch - 9ms/step\n",
"Epoch 27/300\n",
"3/3 - 0s - loss: 0.9438 - 24ms/epoch - 8ms/step\n",
"Epoch 28/300\n",
"3/3 - 0s - loss: 0.8795 - 27ms/epoch - 9ms/step\n",
"Epoch 29/300\n",
"3/3 - 0s - loss: 0.8244 - 27ms/epoch - 9ms/step\n",
"Epoch 30/300\n",
"3/3 - 0s - loss: 0.7758 - 28ms/epoch - 9ms/step\n",
"Epoch 31/300\n",
"3/3 - 0s - loss: 0.7223 - 25ms/epoch - 8ms/step\n",
"Epoch 32/300\n",
"3/3 - 0s - loss: 0.6811 - 28ms/epoch - 9ms/step\n",
"Epoch 33/300\n",
"3/3 - 0s - loss: 0.6502 - 27ms/epoch - 9ms/step\n",
"Epoch 34/300\n",
"3/3 - 0s - loss: 0.5913 - 27ms/epoch - 9ms/step\n",
"Epoch 35/300\n",
"3/3 - 0s - loss: 0.5623 - 27ms/epoch - 9ms/step\n",
"Epoch 36/300\n",
"3/3 - 0s - loss: 0.5156 - 26ms/epoch - 9ms/step\n",
"Epoch 37/300\n",
"3/3 - 0s - loss: 0.4733 - 27ms/epoch - 9ms/step\n",
"Epoch 38/300\n",
"3/3 - 0s - loss: 0.4437 - 23ms/epoch - 8ms/step\n",
"Epoch 39/300\n",
"3/3 - 0s - loss: 0.4079 - 26ms/epoch - 9ms/step\n",
"Epoch 40/300\n",
"3/3 - 0s - loss: 0.3860 - 25ms/epoch - 8ms/step\n",
"Epoch 41/300\n",
"3/3 - 0s - loss: 0.3653 - 23ms/epoch - 8ms/step\n",
"Epoch 42/300\n",
"3/3 - 0s - loss: 0.3451 - 23ms/epoch - 8ms/step\n",
"Epoch 43/300\n",
"3/3 - 0s - loss: 0.3317 - 24ms/epoch - 8ms/step\n",
"Epoch 44/300\n",
"3/3 - 0s - loss: 0.3204 - 24ms/epoch - 8ms/step\n",
"Epoch 45/300\n",
"3/3 - 0s - loss: 0.3113 - 23ms/epoch - 8ms/step\n",
"Epoch 46/300\n",
"3/3 - 0s - loss: 0.3052 - 23ms/epoch - 8ms/step\n",
"Epoch 47/300\n",
"3/3 - 0s - loss: 0.2961 - 25ms/epoch - 8ms/step\n",
"Epoch 48/300\n",
"3/3 - 0s - loss: 0.2947 - 24ms/epoch - 8ms/step\n",
"Epoch 49/300\n",
"3/3 - 0s - loss: 0.2900 - 23ms/epoch - 8ms/step\n",
"Epoch 50/300\n",
"3/3 - 0s - loss: 0.2816 - 30ms/epoch - 10ms/step\n",
"Epoch 51/300\n",
"3/3 - 0s - loss: 0.2803 - 26ms/epoch - 9ms/step\n",
"Epoch 52/300\n",
"3/3 - 0s - loss: 0.2728 - 29ms/epoch - 10ms/step\n",
"Epoch 53/300\n",
"3/3 - 0s - loss: 0.2712 - 22ms/epoch - 7ms/step\n",
"Epoch 54/300\n",
"3/3 - 0s - loss: 0.2697 - 27ms/epoch - 9ms/step\n",
"Epoch 55/300\n",
"3/3 - 0s - loss: 0.2651 - 23ms/epoch - 8ms/step\n",
"Epoch 56/300\n",
"3/3 - 0s - loss: 0.2631 - 26ms/epoch - 9ms/step\n",
"Epoch 57/300\n",
"3/3 - 0s - loss: 0.2600 - 24ms/epoch - 8ms/step\n",
"Epoch 58/300\n",
"3/3 - 0s - loss: 0.2589 - 22ms/epoch - 7ms/step\n",
"Epoch 59/300\n",
"3/3 - 0s - loss: 0.2575 - 24ms/epoch - 8ms/step\n",
"Epoch 60/300\n",
"3/3 - 0s - loss: 0.2544 - 24ms/epoch - 8ms/step\n",
"Epoch 61/300\n",
"3/3 - 0s - loss: 0.2552 - 27ms/epoch - 9ms/step\n",
"Epoch 62/300\n",
"3/3 - 0s - loss: 0.2510 - 25ms/epoch - 8ms/step\n",
"Epoch 63/300\n",
"3/3 - 0s - loss: 0.2481 - 26ms/epoch - 9ms/step\n",
"Epoch 64/300\n",
"3/3 - 0s - loss: 0.2458 - 25ms/epoch - 8ms/step\n",
"Epoch 65/300\n",
"3/3 - 0s - loss: 0.2435 - 24ms/epoch - 8ms/step\n",
"Epoch 66/300\n",
"3/3 - 0s - loss: 0.2419 - 26ms/epoch - 9ms/step\n",
"Epoch 67/300\n",
"3/3 - 0s - loss: 0.2412 - 25ms/epoch - 8ms/step\n",
"Epoch 68/300\n",
"3/3 - 0s - loss: 0.2389 - 23ms/epoch - 8ms/step\n",
"Epoch 69/300\n",
"3/3 - 0s - loss: 0.2374 - 22ms/epoch - 7ms/step\n",
"Epoch 70/300\n",
"3/3 - 0s - loss: 0.2372 - 24ms/epoch - 8ms/step\n",
"Epoch 71/300\n",
"3/3 - 0s - loss: 0.2348 - 25ms/epoch - 8ms/step\n",
"Epoch 72/300\n",
"3/3 - 0s - loss: 0.2350 - 22ms/epoch - 7ms/step\n",
"Epoch 73/300\n",
"3/3 - 0s - loss: 0.2331 - 26ms/epoch - 9ms/step\n",
"Epoch 74/300\n",
"3/3 - 0s - loss: 0.2312 - 23ms/epoch - 8ms/step\n",
"Epoch 75/300\n",
"3/3 - 0s - loss: 0.2291 - 25ms/epoch - 8ms/step\n",
"Epoch 76/300\n",
"3/3 - 0s - loss: 0.2290 - 27ms/epoch - 9ms/step\n",
"Epoch 77/300\n",
"3/3 - 0s - loss: 0.2255 - 26ms/epoch - 9ms/step\n",
"Epoch 78/300\n",
"3/3 - 0s - loss: 0.2260 - 23ms/epoch - 8ms/step\n",
"Epoch 79/300\n",
"3/3 - 0s - loss: 0.2249 - 23ms/epoch - 8ms/step\n",
"Epoch 80/300\n",
"3/3 - 0s - loss: 0.2231 - 28ms/epoch - 9ms/step\n",
"Epoch 81/300\n",
"3/3 - 0s - loss: 0.2208 - 23ms/epoch - 8ms/step\n",
"Epoch 82/300\n",
"3/3 - 0s - loss: 0.2195 - 26ms/epoch - 9ms/step\n",
"Epoch 83/300\n",
"3/3 - 0s - loss: 0.2183 - 22ms/epoch - 7ms/step\n",
"Epoch 84/300\n",
"3/3 - 0s - loss: 0.2167 - 24ms/epoch - 8ms/step\n",
"Epoch 85/300\n",
"3/3 - 0s - loss: 0.2159 - 22ms/epoch - 7ms/step\n",
"Epoch 86/300\n",
"3/3 - 0s - loss: 0.2140 - 25ms/epoch - 8ms/step\n",
"Epoch 87/300\n",
"3/3 - 0s - loss: 0.2129 - 24ms/epoch - 8ms/step\n",
"Epoch 88/300\n",
"3/3 - 0s - loss: 0.2122 - 23ms/epoch - 8ms/step\n",
"Epoch 89/300\n",
"3/3 - 0s - loss: 0.2109 - 21ms/epoch - 7ms/step\n",
"Epoch 90/300\n",
"3/3 - 0s - loss: 0.2092 - 23ms/epoch - 8ms/step\n",
"Epoch 91/300\n",
"3/3 - 0s - loss: 0.2080 - 26ms/epoch - 9ms/step\n",
"Epoch 92/300\n",
"3/3 - 0s - loss: 0.2075 - 23ms/epoch - 8ms/step\n",
"Epoch 93/300\n",
"3/3 - 0s - loss: 0.2062 - 25ms/epoch - 8ms/step\n",
"Epoch 94/300\n",
"3/3 - 0s - loss: 0.2055 - 26ms/epoch - 9ms/step\n",
"Epoch 95/300\n",
"3/3 - 0s - loss: 0.2049 - 26ms/epoch - 9ms/step\n",
"Epoch 96/300\n",
"3/3 - 0s - loss: 0.2035 - 26ms/epoch - 9ms/step\n",
"Epoch 97/300\n",
"3/3 - 0s - loss: 0.2023 - 24ms/epoch - 8ms/step\n",
"Epoch 98/300\n",
"3/3 - 0s - loss: 0.2008 - 24ms/epoch - 8ms/step\n",
"Epoch 99/300\n",
"3/3 - 0s - loss: 0.2001 - 23ms/epoch - 8ms/step\n",
"Epoch 100/300\n",
"3/3 - 0s - loss: 0.1995 - 27ms/epoch - 9ms/step\n",
"Epoch 101/300\n",
"3/3 - 0s - loss: 0.1982 - 25ms/epoch - 8ms/step\n",
"Epoch 102/300\n",
"3/3 - 0s - loss: 0.1974 - 23ms/epoch - 8ms/step\n",
"Epoch 103/300\n",
"3/3 - 0s - loss: 0.1964 - 28ms/epoch - 9ms/step\n",
"Epoch 104/300\n",
"3/3 - 0s - loss: 0.1950 - 22ms/epoch - 7ms/step\n",
"Epoch 105/300\n",
"3/3 - 0s - loss: 0.1943 - 28ms/epoch - 9ms/step\n",
"Epoch 106/300\n",
"3/3 - 0s - loss: 0.1933 - 22ms/epoch - 7ms/step\n",
"Epoch 107/300\n",
"3/3 - 0s - loss: 0.1925 - 26ms/epoch - 9ms/step\n",
"Epoch 108/300\n",
"3/3 - 0s - loss: 0.1916 - 21ms/epoch - 7ms/step\n",
"Epoch 109/300\n",
"3/3 - 0s - loss: 0.1905 - 25ms/epoch - 8ms/step\n",
"Epoch 110/300\n",
"3/3 - 0s - loss: 0.1900 - 25ms/epoch - 8ms/step\n",
"Epoch 111/300\n",
"3/3 - 0s - loss: 0.1892 - 21ms/epoch - 7ms/step\n",
"Epoch 112/300\n",
"3/3 - 0s - loss: 0.1883 - 24ms/epoch - 8ms/step\n",
"Epoch 113/300\n",
"3/3 - 0s - loss: 0.1881 - 26ms/epoch - 9ms/step\n",
"Epoch 114/300\n",
"3/3 - 0s - loss: 0.1866 - 25ms/epoch - 8ms/step\n",
"Epoch 115/300\n",
"3/3 - 0s - loss: 0.1866 - 24ms/epoch - 8ms/step\n",
"Epoch 116/300\n",
"3/3 - 0s - loss: 0.1865 - 23ms/epoch - 8ms/step\n",
"Epoch 117/300\n",
"3/3 - 0s - loss: 0.1859 - 24ms/epoch - 8ms/step\n",
"Epoch 118/300\n",
"3/3 - 0s - loss: 0.1837 - 22ms/epoch - 7ms/step\n",
"Epoch 119/300\n",
"3/3 - 0s - loss: 0.1846 - 26ms/epoch - 9ms/step\n",
"Epoch 120/300\n",
"3/3 - 0s - loss: 0.1828 - 25ms/epoch - 8ms/step\n",
"Epoch 121/300\n",
"3/3 - 0s - loss: 0.1832 - 29ms/epoch - 10ms/step\n",
"Epoch 122/300\n",
"3/3 - 0s - loss: 0.1808 - 26ms/epoch - 9ms/step\n",
"Epoch 123/300\n",
"3/3 - 0s - loss: 0.1804 - 24ms/epoch - 8ms/step\n",
"Epoch 124/300\n",
"3/3 - 0s - loss: 0.1801 - 25ms/epoch - 8ms/step\n",
"Epoch 125/300\n",
"3/3 - 0s - loss: 0.1791 - 26ms/epoch - 9ms/step\n",
"Epoch 126/300\n",
"3/3 - 0s - loss: 0.1782 - 22ms/epoch - 7ms/step\n",
"Epoch 127/300\n",
"3/3 - 0s - loss: 0.1777 - 24ms/epoch - 8ms/step\n",
"Epoch 128/300\n",
"3/3 - 0s - loss: 0.1775 - 23ms/epoch - 8ms/step\n",
"Epoch 129/300\n",
"3/3 - 0s - loss: 0.1764 - 26ms/epoch - 9ms/step\n",
"Epoch 130/300\n",
"3/3 - 0s - loss: 0.1761 - 29ms/epoch - 10ms/step\n",
"Epoch 131/300\n",
"3/3 - 0s - loss: 0.1754 - 28ms/epoch - 9ms/step\n",
"Epoch 132/300\n",
"3/3 - 0s - loss: 0.1758 - 24ms/epoch - 8ms/step\n",
"Epoch 133/300\n",
"3/3 - 0s - loss: 0.1737 - 26ms/epoch - 9ms/step\n",
"Epoch 134/300\n",
"3/3 - 0s - loss: 0.1740 - 26ms/epoch - 9ms/step\n",
"Epoch 135/300\n",
"3/3 - 0s - loss: 0.1733 - 25ms/epoch - 8ms/step\n",
"Epoch 136/300\n",
"3/3 - 0s - loss: 0.1722 - 25ms/epoch - 8ms/step\n",
"Epoch 137/300\n",
"3/3 - 0s - loss: 0.1713 - 31ms/epoch - 10ms/step\n",
"Epoch 138/300\n",
"3/3 - 0s - loss: 0.1715 - 24ms/epoch - 8ms/step\n",
"Epoch 139/300\n",
"3/3 - 0s - loss: 0.1699 - 25ms/epoch - 8ms/step\n",
"Epoch 140/300\n",
"3/3 - 0s - loss: 0.1704 - 23ms/epoch - 8ms/step\n",
"Epoch 141/300\n",
"3/3 - 0s - loss: 0.1693 - 26ms/epoch - 9ms/step\n",
"Epoch 142/300\n",
"3/3 - 0s - loss: 0.1689 - 26ms/epoch - 9ms/step\n",
"Epoch 143/300\n",
"3/3 - 0s - loss: 0.1685 - 26ms/epoch - 9ms/step\n",
"Epoch 144/300\n",
"3/3 - 0s - loss: 0.1673 - 25ms/epoch - 8ms/step\n",
"Epoch 145/300\n",
"3/3 - 0s - loss: 0.1679 - 23ms/epoch - 8ms/step\n",
"Epoch 146/300\n",
"3/3 - 0s - loss: 0.1675 - 28ms/epoch - 9ms/step\n",
"Epoch 147/300\n",
"3/3 - 0s - loss: 0.1676 - 24ms/epoch - 8ms/step\n",
"Epoch 148/300\n",
"3/3 - 0s - loss: 0.1674 - 23ms/epoch - 8ms/step\n",
"Epoch 149/300\n",
"3/3 - 0s - loss: 0.1646 - 26ms/epoch - 9ms/step\n",
"Epoch 150/300\n",
"3/3 - 0s - loss: 0.1667 - 26ms/epoch - 9ms/step\n",
"Epoch 151/300\n",
"3/3 - 0s - loss: 0.1637 - 26ms/epoch - 9ms/step\n",
"Epoch 152/300\n",
"3/3 - 0s - loss: 0.1652 - 24ms/epoch - 8ms/step\n",
"Epoch 153/300\n",
"3/3 - 0s - loss: 0.1633 - 23ms/epoch - 8ms/step\n",
"Epoch 154/300\n",
"3/3 - 0s - loss: 0.1636 - 25ms/epoch - 8ms/step\n",
"Epoch 155/300\n",
"3/3 - 0s - loss: 0.1625 - 21ms/epoch - 7ms/step\n",
"Epoch 156/300\n",
"3/3 - 0s - loss: 0.1624 - 22ms/epoch - 7ms/step\n",
"Epoch 157/300\n",
"3/3 - 0s - loss: 0.1615 - 22ms/epoch - 7ms/step\n",
"Epoch 158/300\n",
"3/3 - 0s - loss: 0.1609 - 23ms/epoch - 8ms/step\n",
"Epoch 159/300\n",
"3/3 - 0s - loss: 0.1605 - 24ms/epoch - 8ms/step\n",
"Epoch 160/300\n",
"3/3 - 0s - loss: 0.1598 - 25ms/epoch - 8ms/step\n",
"Epoch 161/300\n",
"3/3 - 0s - loss: 0.1592 - 29ms/epoch - 10ms/step\n",
"Epoch 162/300\n",
"3/3 - 0s - loss: 0.1588 - 23ms/epoch - 8ms/step\n",
"Epoch 163/300\n",
"3/3 - 0s - loss: 0.1587 - 22ms/epoch - 7ms/step\n",
"Epoch 164/300\n",
"3/3 - 0s - loss: 0.1581 - 26ms/epoch - 9ms/step\n",
"Epoch 165/300\n",
"3/3 - 0s - loss: 0.1576 - 21ms/epoch - 7ms/step\n",
"Epoch 166/300\n",
"3/3 - 0s - loss: 0.1573 - 29ms/epoch - 10ms/step\n",
"Epoch 167/300\n",
"3/3 - 0s - loss: 0.1569 - 26ms/epoch - 9ms/step\n",
"Epoch 168/300\n",
"3/3 - 0s - loss: 0.1563 - 25ms/epoch - 8ms/step\n",
"Epoch 169/300\n",
"3/3 - 0s - loss: 0.1560 - 23ms/epoch - 8ms/step\n",
"Epoch 170/300\n",
"3/3 - 0s - loss: 0.1553 - 27ms/epoch - 9ms/step\n",
"Epoch 171/300\n",
"3/3 - 0s - loss: 0.1550 - 27ms/epoch - 9ms/step\n",
"Epoch 172/300\n",
"3/3 - 0s - loss: 0.1548 - 23ms/epoch - 8ms/step\n",
"Epoch 173/300\n",
"3/3 - 0s - loss: 0.1545 - 23ms/epoch - 8ms/step\n",
"Epoch 174/300\n",
"3/3 - 0s - loss: 0.1541 - 26ms/epoch - 9ms/step\n",
"Epoch 175/300\n",
"3/3 - 0s - loss: 0.1542 - 23ms/epoch - 8ms/step\n",
"Epoch 176/300\n",
"3/3 - 0s - loss: 0.1538 - 24ms/epoch - 8ms/step\n",
"Epoch 177/300\n",
"3/3 - 0s - loss: 0.1529 - 24ms/epoch - 8ms/step\n",
"Epoch 178/300\n",
"3/3 - 0s - loss: 0.1529 - 25ms/epoch - 8ms/step\n",
"Epoch 179/300\n",
"3/3 - 0s - loss: 0.1533 - 23ms/epoch - 8ms/step\n",
"Epoch 180/300\n",
"3/3 - 0s - loss: 0.1518 - 24ms/epoch - 8ms/step\n",
"Epoch 181/300\n",
"3/3 - 0s - loss: 0.1517 - 21ms/epoch - 7ms/step\n",
"Epoch 182/300\n",
"3/3 - 0s - loss: 0.1511 - 25ms/epoch - 8ms/step\n",
"Epoch 183/300\n",
"3/3 - 0s - loss: 0.1503 - 24ms/epoch - 8ms/step\n",
"Epoch 184/300\n",
"3/3 - 0s - loss: 0.1507 - 23ms/epoch - 8ms/step\n",
"Epoch 185/300\n",
"3/3 - 0s - loss: 0.1497 - 22ms/epoch - 7ms/step\n",
"Epoch 186/300\n",
"3/3 - 0s - loss: 0.1496 - 24ms/epoch - 8ms/step\n",
"Epoch 187/300\n",
"3/3 - 0s - loss: 0.1496 - 21ms/epoch - 7ms/step\n",
"Epoch 188/300\n",
"3/3 - 0s - loss: 0.1491 - 22ms/epoch - 7ms/step\n",
"Epoch 189/300\n",
"3/3 - 0s - loss: 0.1487 - 25ms/epoch - 8ms/step\n",
"Epoch 190/300\n",
"3/3 - 0s - loss: 0.1487 - 28ms/epoch - 9ms/step\n",
"Epoch 191/300\n",
"3/3 - 0s - loss: 0.1482 - 24ms/epoch - 8ms/step\n",
"Epoch 192/300\n",
"3/3 - 0s - loss: 0.1479 - 22ms/epoch - 7ms/step\n",
"Epoch 193/300\n",
"3/3 - 0s - loss: 0.1473 - 25ms/epoch - 8ms/step\n",
"Epoch 194/300\n",
"3/3 - 0s - loss: 0.1470 - 24ms/epoch - 8ms/step\n",
"Epoch 195/300\n",
"3/3 - 0s - loss: 0.1462 - 30ms/epoch - 10ms/step\n",
"Epoch 196/300\n",
"3/3 - 0s - loss: 0.1477 - 25ms/epoch - 8ms/step\n",
"Epoch 197/300\n",
"3/3 - 0s - loss: 0.1467 - 22ms/epoch - 7ms/step\n",
"Epoch 198/300\n",
"3/3 - 0s - loss: 0.1464 - 28ms/epoch - 9ms/step\n",
"Epoch 199/300\n",
"3/3 - 0s - loss: 0.1460 - 23ms/epoch - 8ms/step\n",
"Epoch 200/300\n",
"3/3 - 0s - loss: 0.1447 - 26ms/epoch - 9ms/step\n",
"Epoch 201/300\n",
"3/3 - 0s - loss: 0.1450 - 24ms/epoch - 8ms/step\n",
"Epoch 202/300\n",
"3/3 - 0s - loss: 0.1440 - 21ms/epoch - 7ms/step\n",
"Epoch 203/300\n",
"3/3 - 0s - loss: 0.1437 - 26ms/epoch - 9ms/step\n",
"Epoch 204/300\n",
"3/3 - 0s - loss: 0.1434 - 29ms/epoch - 10ms/step\n",
"Epoch 205/300\n",
"3/3 - 0s - loss: 0.1433 - 24ms/epoch - 8ms/step\n",
"Epoch 206/300\n",
"3/3 - 0s - loss: 0.1430 - 24ms/epoch - 8ms/step\n",
"Epoch 207/300\n",
"3/3 - 0s - loss: 0.1427 - 25ms/epoch - 8ms/step\n",
"Epoch 208/300\n",
"3/3 - 0s - loss: 0.1422 - 25ms/epoch - 8ms/step\n",
"Epoch 209/300\n",
"3/3 - 0s - loss: 0.1423 - 26ms/epoch - 9ms/step\n",
"Epoch 210/300\n",
"3/3 - 0s - loss: 0.1418 - 27ms/epoch - 9ms/step\n",
"Epoch 211/300\n",
"3/3 - 0s - loss: 0.1413 - 27ms/epoch - 9ms/step\n",
"Epoch 212/300\n",
"3/3 - 0s - loss: 0.1409 - 29ms/epoch - 10ms/step\n",
"Epoch 213/300\n",
"3/3 - 0s - loss: 0.1409 - 29ms/epoch - 10ms/step\n",
"Epoch 214/300\n",
"3/3 - 0s - loss: 0.1416 - 29ms/epoch - 10ms/step\n",
"Epoch 215/300\n",
"3/3 - 0s - loss: 0.1405 - 28ms/epoch - 9ms/step\n",
"Epoch 216/300\n",
"3/3 - 0s - loss: 0.1399 - 25ms/epoch - 8ms/step\n",
"Epoch 217/300\n",
"3/3 - 0s - loss: 0.1397 - 28ms/epoch - 9ms/step\n",
"Epoch 218/300\n",
"3/3 - 0s - loss: 0.1393 - 25ms/epoch - 8ms/step\n",
"Epoch 219/300\n",
"3/3 - 0s - loss: 0.1395 - 25ms/epoch - 8ms/step\n",
"Epoch 220/300\n",
"3/3 - 0s - loss: 0.1392 - 25ms/epoch - 8ms/step\n",
"Epoch 221/300\n",
"3/3 - 0s - loss: 0.1383 - 25ms/epoch - 8ms/step\n",
"Epoch 222/300\n",
"3/3 - 0s - loss: 0.1387 - 24ms/epoch - 8ms/step\n",
"Epoch 223/300\n",
"3/3 - 0s - loss: 0.1390 - 29ms/epoch - 10ms/step\n",
"Epoch 224/300\n",
"3/3 - 0s - loss: 0.1372 - 24ms/epoch - 8ms/step\n",
"Epoch 225/300\n",
"3/3 - 0s - loss: 0.1392 - 24ms/epoch - 8ms/step\n",
"Epoch 226/300\n",
"3/3 - 0s - loss: 0.1377 - 27ms/epoch - 9ms/step\n",
"Epoch 227/300\n",
"3/3 - 0s - loss: 0.1394 - 23ms/epoch - 8ms/step\n",
"Epoch 228/300\n",
"3/3 - 0s - loss: 0.1369 - 25ms/epoch - 8ms/step\n",
"Epoch 229/300\n",
"3/3 - 0s - loss: 0.1358 - 25ms/epoch - 8ms/step\n",
"Epoch 230/300\n",
"3/3 - 0s - loss: 0.1360 - 26ms/epoch - 9ms/step\n",
"Epoch 231/300\n",
"3/3 - 0s - loss: 0.1355 - 27ms/epoch - 9ms/step\n",
"Epoch 232/300\n",
"3/3 - 0s - loss: 0.1353 - 27ms/epoch - 9ms/step\n",
"Epoch 233/300\n",
"3/3 - 0s - loss: 0.1355 - 24ms/epoch - 8ms/step\n",
"Epoch 234/300\n",
"3/3 - 0s - loss: 0.1348 - 22ms/epoch - 7ms/step\n",
"Epoch 235/300\n",
"3/3 - 0s - loss: 0.1356 - 23ms/epoch - 8ms/step\n",
"Epoch 236/300\n",
"3/3 - 0s - loss: 0.1342 - 23ms/epoch - 8ms/step\n",
"Epoch 237/300\n",
"3/3 - 0s - loss: 0.1336 - 25ms/epoch - 8ms/step\n",
"Epoch 238/300\n",
"3/3 - 0s - loss: 0.1337 - 25ms/epoch - 8ms/step\n",
"Epoch 239/300\n",
"3/3 - 0s - loss: 0.1334 - 26ms/epoch - 9ms/step\n",
"Epoch 240/300\n",
"3/3 - 0s - loss: 0.1330 - 25ms/epoch - 8ms/step\n",
"Epoch 241/300\n",
"3/3 - 0s - loss: 0.1332 - 24ms/epoch - 8ms/step\n",
"Epoch 242/300\n",
"3/3 - 0s - loss: 0.1326 - 24ms/epoch - 8ms/step\n",
"Epoch 243/300\n",
"3/3 - 0s - loss: 0.1330 - 22ms/epoch - 7ms/step\n",
"Epoch 244/300\n",
"3/3 - 0s - loss: 0.1324 - 28ms/epoch - 9ms/step\n",
"Epoch 245/300\n",
"3/3 - 0s - loss: 0.1323 - 23ms/epoch - 8ms/step\n",
"Epoch 246/300\n",
"3/3 - 0s - loss: 0.1323 - 25ms/epoch - 8ms/step\n",
"Epoch 247/300\n",
"3/3 - 0s - loss: 0.1317 - 25ms/epoch - 8ms/step\n",
"Epoch 248/300\n",
"3/3 - 0s - loss: 0.1315 - 24ms/epoch - 8ms/step\n",
"Epoch 249/300\n",
"3/3 - 0s - loss: 0.1319 - 29ms/epoch - 10ms/step\n",
"Epoch 250/300\n",
"3/3 - 0s - loss: 0.1311 - 24ms/epoch - 8ms/step\n",
"Epoch 251/300\n",
"3/3 - 0s - loss: 0.1318 - 23ms/epoch - 8ms/step\n",
"Epoch 252/300\n",
"3/3 - 0s - loss: 0.1299 - 25ms/epoch - 8ms/step\n",
"Epoch 253/300\n",
"3/3 - 0s - loss: 0.1297 - 24ms/epoch - 8ms/step\n",
"Epoch 254/300\n",
"3/3 - 0s - loss: 0.1308 - 26ms/epoch - 9ms/step\n",
"Epoch 255/300\n",
"3/3 - 0s - loss: 0.1309 - 25ms/epoch - 8ms/step\n",
"Epoch 256/300\n",
"3/3 - 0s - loss: 0.1302 - 25ms/epoch - 8ms/step\n",
"Epoch 257/300\n",
"3/3 - 0s - loss: 0.1291 - 25ms/epoch - 8ms/step\n",
"Epoch 258/300\n",
"3/3 - 0s - loss: 0.1306 - 28ms/epoch - 9ms/step\n",
"Epoch 259/300\n",
"3/3 - 0s - loss: 0.1281 - 22ms/epoch - 7ms/step\n",
"Epoch 260/300\n",
"3/3 - 0s - loss: 0.1296 - 27ms/epoch - 9ms/step\n",
"Epoch 261/300\n",
"3/3 - 0s - loss: 0.1289 - 25ms/epoch - 8ms/step\n",
"Epoch 262/300\n",
"3/3 - 0s - loss: 0.1291 - 24ms/epoch - 8ms/step\n",
"Epoch 263/300\n",
"3/3 - 0s - loss: 0.1292 - 25ms/epoch - 8ms/step\n",
"Epoch 264/300\n",
"3/3 - 0s - loss: 0.1273 - 24ms/epoch - 8ms/step\n",
"Epoch 265/300\n",
"3/3 - 0s - loss: 0.1278 - 24ms/epoch - 8ms/step\n",
"Epoch 266/300\n",
"3/3 - 0s - loss: 0.1281 - 25ms/epoch - 8ms/step\n",
"Epoch 267/300\n",
"3/3 - 0s - loss: 0.1265 - 26ms/epoch - 9ms/step\n",
"Epoch 268/300\n",
"3/3 - 0s - loss: 0.1292 - 24ms/epoch - 8ms/step\n",
"Epoch 269/300\n",
"3/3 - 0s - loss: 0.1266 - 24ms/epoch - 8ms/step\n",
"Epoch 270/300\n",
"3/3 - 0s - loss: 0.1261 - 27ms/epoch - 9ms/step\n",
"Epoch 271/300\n",
"3/3 - 0s - loss: 0.1262 - 24ms/epoch - 8ms/step\n",
"Epoch 272/300\n",
"3/3 - 0s - loss: 0.1250 - 26ms/epoch - 9ms/step\n",
"Epoch 273/300\n",
"3/3 - 0s - loss: 0.1256 - 25ms/epoch - 8ms/step\n",
"Epoch 274/300\n",
"3/3 - 0s - loss: 0.1255 - 25ms/epoch - 8ms/step\n",
"Epoch 275/300\n",
"3/3 - 0s - loss: 0.1246 - 26ms/epoch - 9ms/step\n",
"Epoch 276/300\n",
"3/3 - 0s - loss: 0.1244 - 25ms/epoch - 8ms/step\n",
"Epoch 277/300\n",
"3/3 - 0s - loss: 0.1241 - 28ms/epoch - 9ms/step\n",
"Epoch 278/300\n",
"3/3 - 0s - loss: 0.1241 - 28ms/epoch - 9ms/step\n",
"Epoch 279/300\n",
"3/3 - 0s - loss: 0.1237 - 23ms/epoch - 8ms/step\n",
"Epoch 280/300\n",
"3/3 - 0s - loss: 0.1234 - 27ms/epoch - 9ms/step\n",
"Epoch 281/300\n",
"3/3 - 0s - loss: 0.1236 - 25ms/epoch - 8ms/step\n",
"Epoch 282/300\n",
"3/3 - 0s - loss: 0.1233 - 28ms/epoch - 9ms/step\n",
"Epoch 283/300\n",
"3/3 - 0s - loss: 0.1233 - 27ms/epoch - 9ms/step\n",
"Epoch 284/300\n",
"3/3 - 0s - loss: 0.1227 - 24ms/epoch - 8ms/step\n",
"Epoch 285/300\n",
"3/3 - 0s - loss: 0.1232 - 25ms/epoch - 8ms/step\n",
"Epoch 286/300\n",
"3/3 - 0s - loss: 0.1224 - 26ms/epoch - 9ms/step\n",
"Epoch 287/300\n",
"3/3 - 0s - loss: 0.1226 - 24ms/epoch - 8ms/step\n",
"Epoch 288/300\n",
"3/3 - 0s - loss: 0.1217 - 23ms/epoch - 8ms/step\n",
"Epoch 289/300\n",
"3/3 - 0s - loss: 0.1221 - 25ms/epoch - 8ms/step\n",
"Epoch 290/300\n",
"3/3 - 0s - loss: 0.1220 - 22ms/epoch - 7ms/step\n",
"Epoch 291/300\n",
"3/3 - 0s - loss: 0.1212 - 26ms/epoch - 9ms/step\n",
"Epoch 292/300\n",
"3/3 - 0s - loss: 0.1210 - 23ms/epoch - 8ms/step\n",
"Epoch 293/300\n",
"3/3 - 0s - loss: 0.1210 - 21ms/epoch - 7ms/step\n",
"Epoch 294/300\n",
"3/3 - 0s - loss: 0.1209 - 24ms/epoch - 8ms/step\n",
"Epoch 295/300\n",
"3/3 - 0s - loss: 0.1203 - 25ms/epoch - 8ms/step\n",
"Epoch 296/300\n",
"3/3 - 0s - loss: 0.1202 - 27ms/epoch - 9ms/step\n",
"Epoch 297/300\n",
"3/3 - 0s - loss: 0.1202 - 25ms/epoch - 8ms/step\n",
"Epoch 298/300\n",
"3/3 - 0s - loss: 0.4317 - 25ms/epoch - 8ms/step\n",
"Epoch 299/300\n",
"3/3 - 0s - loss: 0.1364 - 25ms/epoch - 8ms/step\n",
"Epoch 300/300\n",
"3/3 - 0s - loss: 0.1644 - 27ms/epoch - 9ms/step\n",
"14/14 [==============================] - 0s 3ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7baebcb03c40>"
]
},
"metadata": {},
"execution_count": 73
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "YyOarWssKyjN",
"outputId": "59f2ad6f-5b06-4495-936a-1131935bc520"
},
"execution_count": 74,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1710116007.8262966\n",
"Mon Mar 11 00:13:27 2024\n"
]
}
]
}
]
}